package com.briup.bookstore.service;

import com.briup.bookstore.domain.dto.OrderPayDTO;
import com.briup.bookstore.domain.dto.OrderPaySuccessDTO;
import jakarta.validation.Valid;

/**
 * 订单支付服务接口
 */
public interface OrderPayService {

    /**
     * 订单支付，实际是调用支付宝支付的接口，
     * 在本方法中设置需要传递给支付宝支付接口的参数，
     * 并调用支付宝支付接口，
     * 最后返回支付页面
     *
     * @param payDTO 订单支付时传输数据的DTO实体
     * @return 支付页面
     */
    String pay(OrderPayDTO payDTO);

    /**
     * 订单支付成功后执行的回调方法，
     * 在本方法中需要实际的修改订单的状态，
     * 以及更新订单的支付时间、支付方式等信息
     *
     * @param paySuccessDTO 订单支付成功时传输数据的DTO实体
     */
    void paySuccess(@Valid OrderPaySuccessDTO paySuccessDTO);
}
